import * as XLSX from 'xlsx'
/*
    * @description:
    * @param {Object} json 服务端发过来的数据
    * @param {String} name 导出Excel文件名字
   
    * @param {String} titleArr 导出Excel表头
   
    * @param {String} sheetName 导出sheetName名字
    * @return:
    */
export function exportExcel(json, name, titleArr, sheetName) {
    /* convert state to workbook */
    var data = new Array();
    var keyArray = new Array();
    const getLength = function (obj) {
        var count = 0;
        for (var i in obj) {
            if (obj.hasOwnProperty(i)) {
                count++;
            }
        }
        return count;
    };
    for (const key1 in json) {
        if (json.hasOwnProperty(key1)) {
            const element = json[key1];
            var rowDataArray = new Array();
            for (const key2 in element) {
                if (element.hasOwnProperty(key2)) {
                    const element2 = element[key2];
                    rowDataArray.push(element2);
                    if (keyArray.length < getLength(element)) {
                        keyArray.push(key2);
                    }
                }
            }
            data.push(rowDataArray);
        }
    }
    // keyArray为英文字段表头
    data.splice(0, 0, keyArray, titleArr);
    console.log('data', data);
    const ws = XLSX.utils.aoa_to_sheet(data);
    const wb = XLSX.utils.book_new();
    // 此处隐藏英文字段表头
    var wsrows = [{ hidden: true }];
    ws['!rows'] = wsrows; // ws - worksheet
    XLSX.utils.book_append_sheet(wb, ws, sheetName);
    /* generate file and send to client */
    XLSX.writeFile(wb, name + "_" + getNowTime() + '.xlsx');
}

/**
 * 得到当前时间
 * @returns 
 */
function getNowTime() {
    var now = new Date();
    var year = now.getFullYear(); //得到年份
    var month = now.getMonth() + 1;//得到月份
    if (month < 10) { //如果月份为数字，则将其转义为字符串，并将其以十进制
        month = '0' + month; 	//将月份数字转换为字符串，最后一位将被加上0
    }
    var date = now.getDate();//得到日期
    if (date < 10) { //如果日期为数字，则将其转义为字符串，并将其以十进
        date = '0' + date; 	//将日期数字转换为字符串，最后一位将被加上
    }
    var hour = now.getHours();//得到小时数
    if (hour < 10) {
        hour = '0' + hour;
    }
    var minute = now.getMinutes();//得到分钟数
    if (minute < 10) { 	//如果分钟数为数字，则将其转义为字符串，并将其
        minute = '0' + minute; 	//将分钟数数字转换为字符串，最后一位将被加上
    }
    var second = now.getSeconds();//得到秒数
    if (second < 10) {
        sccond = '0' + second; //如果秒数为数字，则将其转义为字符串，并将其以十进
    }
    var txt = String(year) + String(month) + String(date) + String(hour) + String(minute) + String(second); //合并得到当天的日期和时间字符串
    return txt; //返回字符串格式的当天的日期和时间字符串
}